package in.rob.client.fragment; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import in.controller.adapter.ChannelMessageAdapter; import in.controller.handler.ChannelMessageStreamResponseHandler; import in.data.stream.ChannelMessageStream; import in.lib.Constants; import in.lib.manager.APIManager; import in.lib.manager.ResponseManager; import in.lib.utils.Views.Injectable; import in.model.Channel; import in.rob.client.R; import in.rob.client.dialog.NewMessageDialog; import in.rob.client.fragment.base.StreamFragment; import lombok.Getter; @Injectable public class ChannelMessagesFragment extends StreamFragment { @Getter private Channel channel; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); } @Override public void retrieveArguments(Bundle arguments) { super.retrieveArguments(arguments); if (arguments != null && arguments.containsKey(Constants.EXTRA_CHANNEL)) { channel = (Channel)arguments.getParcelable(Constants.EXTRA_CHANNEL); } else { Toast.makeText(getContext(), R.string.channels_stream_fail, Toast.LENGTH_SHORT).show(); getActivity().finish(); return; } } @Override public void setupAdapter() { setAdapter(new ChannelMessageAdapter(getContext())); } @Override public void fetchStream(String lastId, boolean append) { ChannelMessageStreamResponseHandler response = new ChannelMessageStreamResponseHandler(append); ResponseManager.getInstance().addResponse(getResponseKeys()[0], response, this); APIManager.getInstance().getChannelMessages(channel.getId(), lastId, response); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_channel_messages, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.menu_new_message) { Intent newMessage = new Intent(getContext(), NewMessageDialog.class); newMessage.putExtra(Constants.EXTRA_CHANNEL, (Parcelable)getChannel()); startActivity(newMessage); return true; } return super.onOptionsItemSelected(item); } @Override public Class getCacheClass() { return ChannelMessageStream.class; } @Override public String[] getResponseKeys() { return new String[] { String.format(Constants.RESPONSE_CHANNEL_MESSAGES, channel.getId()) }; } @Override public String getCacheKey() { return String.format(Constants.CACHE_CHANNEL_MESSAGES, channel.getId()); } }